package com.java.al.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author 马智城
 * 功能说明:
 * Jan 29, 2012 10:05:08 AM
 */
public class DateUtil {
	private static Calendar ca = Calendar.getInstance();
	/** 当前年**/
	public static String YEAR = "";
	/** 当前月**/
	public static String MONTH = "";
	/** 当前日期**/
	public static String DATE = "";
	/** 当前日期前一天**/
	public static String YESTERDAY = "";
	static{
		YESTERDAY = getYesterday();
		ca.setTime(new Date());
		DATE = formatDate("yyyy-MM-dd",ca.getTime());
		YEAR = formatDate("yyyy",ca.getTime());
		MONTH = formatDate("MM",ca.getTime());
	}
	
	/**
	 * 方法名:getYesterday
	 * 方法作用:得到当前日期前一天
	 * @return 字符串类型日期
	 */
	public static String getYesterday(){
		Calendar newCa = Calendar.getInstance();
		newCa.setTime(new Date());
		newCa.add(Calendar.DATE,-1);
		return formatDate("yyyy-MM-dd",newCa.getTime());
	}
	
	
	/**
	 * 方法名:getYesterday
	 * 方法作用:得到指定日期前一天
	 * @param date	传入字符串类型日期
	 * @return 字符串类型指定日期前一天
	 * @throws ParseException 
	 */
	public static String getYesterday(String date) throws ParseException{
		Calendar newCa = Calendar.getInstance();
		newCa.setTime(StringToDate("yyyy-MM-dd",date));
		newCa.add(Calendar.DATE,-1);
		return formatDate("yyyy-MM-dd",newCa.getTime());
	}
	
	/**
	 * 方法名:formatDate
	 * 方法作用:格式化日期
	 * @param sule	格式化规则
	 * @param date	Date类型日期
	 * @return	字符串型日期
	 */
	public static String formatDate(String sule,Date date){
		SimpleDateFormat sdf = new SimpleDateFormat(sule);
		return sdf.format(date);
	}
	
	/**
	 * 方法名:formatDate
	 * 方法作用:格式化日期
	 * @param sule	格式化规则
	 * @param date	字符串类型日期
	 * @return	字符串型日期
	 * @throws ParseException 
	 */
	public static String formatDate(String sule,String date) throws ParseException{
		String newDate = "";
		SimpleDateFormat sdf = new SimpleDateFormat(sule);
		newDate = sdf.format(sdf.parse(date));
		return newDate;
	}
	
	/**
	 * 方法名:StringToDate
	 * 方法作用:格式化日期
	 * @param sule	格式化规则
	 * @param date	字符串型日期
	 * @return	Date 类型日期
	 * @throws ParseException 
	 */
	public static Date StringToDate(String sule,String date) throws ParseException{
		Date newDate = null;
		SimpleDateFormat sdf = new SimpleDateFormat(sule);
		newDate = sdf.parse(date);
		return newDate;
	}
	
}
